package com.hsurosy.hsuchain.nft.auth.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.hsurosy.hsuchain.nft.auth.exception.AuthErrorCode;
import com.hsurosy.hsuchain.nft.auth.exception.AuthException;
import com.hsurosy.hsuchain.nft.web.vo.Result;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

/**
 * Token管理控制器
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 19:28
 * @Description
 * @Version: v1.0.0
 */
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("token")
public class TokenController {

    /**
     * 获取用于指定场景的临时Token
     *
     * @param scene 请求的场景名称，不能为空
     * @return 返回生成的Token字符串
     */
    @GetMapping("/get")
    public Result<String> get(@NotBlank String scene) {
        // 检查用户是否已登录
        if (StpUtil.isLogin()) {
            // 生成一个唯一的Token
            String token = UUID.randomUUID().toString();
            // Token保存到缓存中（逻辑尚未实现）
            // 返回生成的Token
            return Result.success(token);
        }
        // 如果用户未登录，抛出未登录异常
        throw new AuthException(AuthErrorCode.USER_NOT_LOGIN);
    }
}
